iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
0

首先第一個是變數的命名,在程式中或許你可以把所有code集中一起避免使用方法,但有一個東西是絕對無法省略的,那就是:變數
因此我們先來學習變數應該怎麼命名會比較好吧。

有意義的命名

首先是有意義的命名。
這部分相當重要,尤其是用在方法的帶入參數,因為如果方法名稱不明確且參數都只是string或map的話,則會導致下一位開發者看不懂方法的使用。
或許會有人想說那如果只是方法裡面用到的區域變數應該就不會有問題了吧?
關於這部份我們可以直接看下方的code

public boolean function(String c){
    String b = "^\\w{1,63}@[a-zA-Z0-9]{2,63}\\.[a-zA-Z]{2,63}(\\.[a-zA-Z]{2,63})?$";
    return c.match(b);
}

上面的程式碼你花了幾分鐘看正規表達式去了解整個方法要做的事情呢?
接著我們看看下方的程式碼試試看是否可以花更少的時間閱讀:

public boolean checkEmailFormat(String email){
    String chekEmailRegex = "^\\w{1,63}@[a-zA-Z0-9]{2,63}\\.[a-zA-Z]{2,63}(\\.[a-zA-Z]{2,63})?$";
    return email.match(checkEmailRegex);
}

修改成這樣之後我們可以只閱讀方法名稱就知道這個方法有做甚麼。
方法裡面我們甚至不用閱讀那超長的正規表達式就知道他要用來判斷email的格式。甚至只閱讀最後一行就知道他要判斷email格式。

能夠被念出來的名稱

文字對於人來說是比較敏感的,一段詞念過一次或讀過一遍通常可以短時間的記得。
比如說:turnDateToString跟dateStringTurn可以試試看哪個會記比較久。
因此使用能夠被念出來的名稱會更加容易記在腦。
另外當code review或與別人討論時會更好討論。

可以被搜尋的名字

有時在修改功能時第一個回想到的相關code可能是變數的名稱。因此當這個變數只是"count"或單一一個字母而已的話會導致沒辦法快速找到該變數。

總結

以上是這次的命名的前篇。
或許會有人問說為什麼會停在這邊?
坦白說只是我想上面的範例想累了,說真的舉例好難啊。
很難想一個既簡單又容易舉例的例子,真的越來越欽佩寫文章跟寫書的人了。
最後簡單預告一下:
明天我們會來討論:

  1. 方法的命名
  2. 每個概念使用一個字詞
  3. 使用解決方案命名

敬請期待


上一篇
clean code?
下一篇
clean code - 命名(後篇)
系列文
為這美好世界獻上clean code!!5
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言